package development;

import java.util.Hashtable;


import state.Alert;
import state.GameForm;
import state.Graphics;
import state.Key;
import state.font.FontManager;
import state.font.ImageText;
import state.util.Color;

public class FrmGuide extends GameForm {

  public static final String DAO_VANG_HELP = "Hãy cùng đối thủ thi nhau kéo vàng.  Hãy ấn nút xuống để thả cái móc câu tới những vật có giá trị để kéo chúng về. Mỗi vật phẩm sẽ giá trị nhất định, điểm sẽ được tính bằng tổng giá trị các vât kéo được. Nếu giành được điểm cao hơn bạn sẽ chiến thắng."
      + "\n-- Hướng dẫn mua đồ để tăng khả năng chiến thắng:"
      + "\n          ấn nút * để mua sức mạnh, tốc độ kéo các vật phẩm sẽ nhanh nhất"
      + "\n          ấn nút # để mua khả năng cướp vàng, có thể tranh cục vàng của đối thủ đang kéo"
      + "\n-- Giá trị các vật phẩm:"
      + "\n          Vàng  to: 500 điểm"
      + "\n          Vàng vừa: 200 điểm"
      + "\n          Vàng nhỏ: 100 điểm"
      + "\n          Đá to : 50 điểm"
      + "\n          Đá nhỏ: 30 điểm"
      + "\n          Kim cương: 650 điểm"
      + "\n          Chuột: 4 điểm" + "\n          Chuột tha kim cương: 800 điểm" + "\n          Gói quà:  điểm ngẫu nhiên" + "\n          Xương, đầu lâu, thuốc nổ và các vật phẩm còn lại: 2 điểm";

  public final String DAO_VANG_TITLE = "Hướng dẫn game Đào Vàng";

  private final int STEP = 10;
  private final int DEFAULT_TEXT_X = 20;
  private final int DEFAULT_TEXT_Y = 35;

  public String helpText;
  public int minTextY;
  public int textWidth;
  public String title;

  private int textX;
  private int textY;

  private ImageText text8;
  
  private static GameForm singleton;
  
  public static GameForm instance() {
    if (singleton == null) {
      singleton = new FrmGuide();
    }
    return singleton;
  }

  public void init(Hashtable parameters) {
    manager.setBackGroundColor(Color.BLACK_CODE);
    
    helpText = DAO_VANG_HELP;
    title = DAO_VANG_TITLE;
    textWidth = 200;

    textX = DEFAULT_TEXT_X;
    textY = DEFAULT_TEXT_Y;
    minTextY = -350;

    text8 = FontManager.getFont(FontManager.FONT_SIZE_8);
  }

  public void draw(Graphics g) {
    text8.drawString(g, title, Color.WHITE_CODE, Constants.SCREEN_WIDTH / 2, 3, Constants.TOP_HCENTER_ANCHOR);

    g.setClip(textX, DEFAULT_TEXT_Y, Constants.SCREEN_WIDTH - DEFAULT_TEXT_X, Constants.SCREEN_HEIGHT - DEFAULT_TEXT_Y - 30);
    text8.drawParagraph(g, helpText, Color.WHITE_CODE, textWidth, textX, textY);
    
    // Draw scroll bar
    g.setClip(0, 0, Constants.SCREEN_WIDTH, Constants.SCREEN_HEIGHT);
    g.setColor(Color.WHITE_CODE);
    g.fillRect(Constants.SCREEN_WIDTH - 5, 25, 5, Constants.SCREEN_HEIGHT - 50);
  }

  public void keyReleased(int keyCode) {
    switch (keyCode) {
    case Key.SOFT_RIGHT:
      Global.nextState(Global.systemCanvas.lastState, null);
      break;
    case Key.FIRE:
      Global.alert.showAlert(this, Alert.YES_NO_TYPE, "Test touch alert");
      break;
    case Key.DOWN:
      if (textY > minTextY) {
        textY -= STEP;
      }
      break;
    case Key.UP:
      if (textY < DEFAULT_TEXT_Y) {
        textY += STEP;
      }
      break;
    }
  }

  public void keyRepeated(int keyCode) {
    switch (keyCode) {
    case Key.DOWN:
      if (textY > minTextY) {
        textY -= 2 * STEP;
      }
      break;
    case Key.UP:
      if (textY < DEFAULT_TEXT_Y) {
        textY += 2 * STEP;
      }
      break;
    }
  }

  protected void destroy() {
  }
}
